﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class ThongKe_PhuLuc2b : System.Web.UI.Page
{
    public List<tblDanhMuc> listTrinhDoChuyenMon = null;
    public List<tblDanhMuc> listTrinhDoChinhTri = null;
    public List<tblDanhMuc> listNgoaiNgu = null;
    public List<tblDanhMuc> listTinHoc = null;
    _dbDataContext _db = new _dbDataContext();
    protected List<PageURL.ListThongKeChucVuDoan> listthongkechucvudoan()
    {
        var list = from p in _db.tblDoanViens
                   join c in _db.tblCongTacDoans on p.MaDonVien equals c.MaDoanVien
                   select new PageURL.ListThongKeChucVuDoan
                   {
                       DonVi = c.DonViTrucThuoc,
                       ChucVuDoan = c.ChucVuHienTai,
                       TrinhDoChuyenMon = p.TrinhDoChuyenMonID,
                       TrinhDoLyLuanChinhTri = p.tblQuanHeXaHoi.LyLuanChinhTriID,
                       Phai = p.Phai,
                       DangVien = p.DangVien,
                       DanToc = SecurityLib.ToolsMore.ConvertToUnSign(p.tblDanhMuc.TenDanhMuc.Trim()),
                       TonGiao = SecurityLib.ToolsMore.ConvertToUnSign(p.tblDanhMuc1.TenDanhMuc.Trim()),
                       NgoaiNgu = p.NgoaiNgu,
                       TinHoc = p.TinHoc,
                       Tuoi = tuoi(Convert.ToDateTime(p.NgaySinh))
                   };
        return list.ToList();
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            listTrinhDoChuyenMon = _db.tblDanhMucs.Where(r => r.Loai == 1016).ToList();
            listTrinhDoChinhTri = _db.tblDanhMucs.Where(r => r.Loai == 7).ToList();
            listNgoaiNgu = _db.tblDanhMucs.Where(r => r.Loai == 4).ToList();
            listTinHoc = _db.tblDanhMucs.Where(r => r.Loai == 5).ToList();
            List<int> ListTuoi = new List<int>();
            ListTuoi.Add(20);
            ListTuoi.Add(25);
            ListTuoi.Add(30);
            ListTuoi.Add(35);
            ListTuoi.Add(40);
            ListTuoi.Add(42);
            ListTuoi.Add(43);
            //cap tinh
            BindDataToTable("TDB",lblcaptinhtong,lblcaptinhbithu,lblcaptinhphobithu,lblcaptinhbanthuongvu,lblcaptinhbanchaphanh,lblcanbochuyentrach);
            //cap huyen
            BindDataToTable("CSD", lblcaphuyentong, lblcaphuyenbithu, lblcaphuyenphobithu, lblcaphuyenbanthuongvu, lblcaphuyenbanchaphanh,lblcaphuyencanbochuyentrach);
            //cap co so
            BindDataToTableCapCoSo(lblcapcosotong,lblcapcosobithu,lblcapcosophobithu,lblcapcosobanthuongvu,lblcapcosobanchaphanh,lblcapcosocanbochuyentrach);
            //cap xa, phuong, thi tran
            BindDataToTable("CDD", lblchidoantong, lblchidoanbithu, lblchidoanphobithu, lblcapchidoanbanthuongvu, lblcapchidoanbanchaphanh, lblcapchidoancanbochuyentrach);
        }
    }
    protected void btn_xuat_file_excel_Click(object sender, EventArgs e)
    {
        Response.Redirect("javascript:window.open('../Print/Print2b.aspx','_blank');");
    }
    //do o day theo yeu cau cua phieu la tinh luan ca xa, phuong, thi tran nen se lay luan don vi la cap xa
    private void BindDataToTableCapCoSo(Label lbl1, Label lbl2, Label lbl3,Label lbl4,Label lbl5,Label lbl6)
    {
        var listcapcha = listthongkechucvudoan().Where(r => r.DonVi.Substring(0, 3).ToUpper() == "DCS" || r.DonVi.Substring(0, 3).ToUpper() == "CDC" || r.DonVi.Substring(0, 3).ToUpper() == "CDD").ToList();
        //tính tổng cộng nam, nữ
        string stcapcha = "<td style=font-weight:bold;>" + listcapcha.Where(r => r.Phai == true).Count().ToString() + "</td>";
        stcapcha += "<td style=font-weight:bold;>" + listcapcha.Where(r => r.Phai == false).Count().ToString() + "</td>";
        //tính tổng theo trình độ
        foreach (var item in listTrinhDoChuyenMon)
        {
            stcapcha += "<td style=font-weight:bold;>" + listcapcha.Where(r => r.TrinhDoChuyenMon == item.ID).Count().ToString() + "</td>";
        }
        //tính tổng theo trình độ lý luận chính trị
        foreach (var item in listTrinhDoChinhTri)
        {
            stcapcha += "<td style=font-weight:bold;>" + listcapcha.Where(r => r.TrinhDoLyLuanChinhTri == item.ID).Count().ToString() + "</td>";
        }
        //tính tổng cộng đảng viên
        stcapcha += "<td style=font-weight:bold;>" + listcapcha.Where(r => r.DangVien == true).Count().ToString() + "</td>";
        //tính tổng cộng dân tộc thiểu số
        stcapcha += "<td style=font-weight:bold;>" + listcapcha.Where(r => r.DanToc.ToUpper() != "KINH").Count().ToString() + "</td>";
        //tính tổng cộng tôn giáo
        stcapcha += "<td style=font-weight:bold;>" + listcapcha.Where(r => r.TonGiao.ToUpper() != "KHONG").Count().ToString() + "</td>";
        //tính tổng theo trình độ ngoai ngu
        foreach (var item in listNgoaiNgu)
        {
            stcapcha += "<td style=font-weight:bold;>" + listcapcha.Where(r => r.NgoaiNgu == item.ID).Count().ToString() + "</td>";
        }
        //tính tổng theo trình độ tin hoc
        foreach (var item in listTinHoc)
        {
            stcapcha += "<td style=font-weight:bold;>" + listcapcha.Where(r => r.TinHoc == item.ID).Count().ToString() + "</td>";
        }
        //tính tổng theo do tuoi
        stcapcha += "<td style=font-weight:bold;>" + listcapcha.Where(r => r.Tuoi <= CatalogAccess.GetDoTuoi().DoTuoi20).Count().ToString() + "</td>";
        stcapcha += "<td style=font-weight:bold;>" + listcapcha.Where(r => r.Tuoi > CatalogAccess.GetDoTuoi().DoTuoi20 && r.Tuoi <= CatalogAccess.GetDoTuoi().DoTuoi25).Count().ToString() + "</td>";
        stcapcha += "<td style=font-weight:bold;>" + listcapcha.Where(r => r.Tuoi > CatalogAccess.GetDoTuoi().DoTuoi25 && r.Tuoi <= CatalogAccess.GetDoTuoi().DoTuoi30).Count().ToString() + "</td>";
        stcapcha += "<td style=font-weight:bold;>" + listcapcha.Where(r => r.Tuoi > CatalogAccess.GetDoTuoi().DoTuoi30 && r.Tuoi <= CatalogAccess.GetDoTuoi().DoTuoi35).Count().ToString() + "</td>";
        stcapcha += "<td style=font-weight:bold;>" + listcapcha.Where(r => r.Tuoi > CatalogAccess.GetDoTuoi().DoTuoi35 && r.Tuoi <= CatalogAccess.GetDoTuoi().DoTuoi40).Count().ToString() + "</td>";
        stcapcha += "<td style=font-weight:bold;>" + listcapcha.Where(r => r.Tuoi > CatalogAccess.GetDoTuoi().DoTuoi40 && r.Tuoi <= CatalogAccess.GetDoTuoi().DoTuoi42).Count().ToString() + "</td>";
        stcapcha += "<td style=font-weight:bold;>" + listcapcha.Where(r => r.Tuoi > CatalogAccess.GetDoTuoi().DoTuoi42).Count().ToString() + "</td>";
        lbl1.Text = stcapcha;
        //tinh theo tung chuc vu doan
        TinhTungCapDoan(22, lbl2, listcapcha);
        TinhTungCapDoan(97, lbl3, listcapcha);
        TinhTungCapDoan(98, lbl4, listcapcha);
        TinhTungCapDoan(99, lbl5, listcapcha);
        TinhTungCapDoan(100, lbl6, listcapcha);

    }
    private void BindDataToTable(string capdonvi,Label lbl1,Label lbl2,Label lbl3,Label lbl4,Label lbl5,Label lbl6)
    { 
        //lấy danh sách các bộ thuộc cấp tỉnh
        var listcapcha = listthongkechucvudoan().Where(r => r.DonVi.Substring(0, 3).ToUpper() == capdonvi).ToList();
        //tính tổng cộng nam, nữ
        string stcapcha = "<td style=font-weight:bold;>"+listcapcha.Where(r => r.Phai == true).Count().ToString()+"</td>";
        stcapcha += "<td style=font-weight:bold;>" + listcapcha.Where(r => r.Phai == false).Count().ToString() + "</td>";
        //tính tổng theo trình độ
        foreach (var item in listTrinhDoChuyenMon)
        {
            stcapcha += "<td style=font-weight:bold;>" + listcapcha.Where(r => r.TrinhDoChuyenMon == item.ID).Count().ToString() + "</td>";
        }
        //tính tổng theo trình độ lý luận chính trị
        foreach (var item in listTrinhDoChinhTri)
        {
            stcapcha += "<td style=font-weight:bold;>" + listcapcha.Where(r => r.TrinhDoLyLuanChinhTri == item.ID).Count().ToString() + "</td>";
        }
        //tính tổng cộng đảng viên
        stcapcha += "<td style=font-weight:bold;>" + listcapcha.Where(r => r.DangVien == true).Count().ToString() + "</td>";
        //tính tổng cộng dân tộc thiểu số
        stcapcha += "<td style=font-weight:bold;>" + listcapcha.Where(r => r.DanToc.ToUpper() != "KINH").Count().ToString() + "</td>";
        //tính tổng cộng tôn giáo
        stcapcha += "<td style=font-weight:bold;>" + listcapcha.Where(r => r.TonGiao.ToUpper() != "KHONG").Count().ToString() + "</td>";
        //tính tổng theo trình độ ngoai ngu
        foreach (var item in listNgoaiNgu)
        {
            stcapcha += "<td style=font-weight:bold;>" + listcapcha.Where(r => r.NgoaiNgu == item.ID).Count().ToString() + "</td>";
        }
        //tính tổng theo trình độ tin hoc
        foreach (var item in listTinHoc)
        {
            stcapcha += "<td style=font-weight:bold;>" + listcapcha.Where(r => r.TinHoc == item.ID).Count().ToString() + "</td>";
        }
        //tính tổng theo do tuoi
        stcapcha += "<td style=font-weight:bold;>" + listcapcha.Where(r => r.Tuoi <= CatalogAccess.GetDoTuoi().DoTuoi20).Count().ToString() + "</td>";
        stcapcha += "<td style=font-weight:bold;>" + listcapcha.Where(r => r.Tuoi > CatalogAccess.GetDoTuoi().DoTuoi20 && r.Tuoi <= CatalogAccess.GetDoTuoi().DoTuoi25).Count().ToString() + "</td>";
        stcapcha += "<td style=font-weight:bold;>" + listcapcha.Where(r => r.Tuoi > CatalogAccess.GetDoTuoi().DoTuoi25 && r.Tuoi <= CatalogAccess.GetDoTuoi().DoTuoi30).Count().ToString() + "</td>";
        stcapcha += "<td style=font-weight:bold;>" + listcapcha.Where(r => r.Tuoi > CatalogAccess.GetDoTuoi().DoTuoi30 && r.Tuoi <= CatalogAccess.GetDoTuoi().DoTuoi35).Count().ToString() + "</td>";
        stcapcha += "<td style=font-weight:bold;>" + listcapcha.Where(r => r.Tuoi > CatalogAccess.GetDoTuoi().DoTuoi35 && r.Tuoi <= CatalogAccess.GetDoTuoi().DoTuoi40).Count().ToString() + "</td>";
        stcapcha += "<td style=font-weight:bold;>" + listcapcha.Where(r => r.Tuoi > CatalogAccess.GetDoTuoi().DoTuoi40 && r.Tuoi <= CatalogAccess.GetDoTuoi().DoTuoi42).Count().ToString() + "</td>";
        stcapcha += "<td style=font-weight:bold;>" + listcapcha.Where(r => r.Tuoi > CatalogAccess.GetDoTuoi().DoTuoi42).Count().ToString() + "</td>";
        lbl1.Text = stcapcha;
        //tinh cac chuc vu doan
        TinhTungCapDoan(22, lbl2, listcapcha);
        TinhTungCapDoan(97, lbl3, listcapcha);
        TinhTungCapDoan(98, lbl4, listcapcha);
        TinhTungCapDoan(99, lbl5, listcapcha);
        TinhTungCapDoan(100, lbl6, listcapcha);
    }

    private void TinhTungCapDoan(int chucvudoan, Label lbl,List<PageURL.ListThongKeChucVuDoan> listcapcha)
    {
        var listbithuphobithu = listcapcha.Where(r => r.ChucVuDoan == chucvudoan);
        string str = "<td>" + listbithuphobithu.Where(r => r.Phai == true).Count().ToString() + "</td>";
        str += "<td>" + listbithuphobithu.Where(r => r.Phai == false).Count().ToString() + "</td>";
        //tính tổng theo trình độ
        foreach (var item in listTrinhDoChuyenMon)
        {
            str += "<td>" + listbithuphobithu.Where(r => r.TrinhDoChuyenMon == item.ID).Count().ToString() + "</td>";
        }
        //tính tổng theo trình độ lý luận chính trị
        foreach (var item in listTrinhDoChinhTri)
        {
            str += "<td>" + listbithuphobithu.Where(r => r.TrinhDoLyLuanChinhTri == item.ID).Count().ToString() + "</td>";
        }
        //tính tổng cộng đảng viên
        str += "<td>" + listbithuphobithu.Where(r => r.DangVien == true).Count().ToString() + "</td>";
        //tính tổng cộng dân tộc thiểu số
        str += "<td>" + listbithuphobithu.Where(r => r.DanToc.ToUpper() != "KINH").Count().ToString() + "</td>";
        //tính tổng cộng tôn giáo
        str += "<td>" + listbithuphobithu.Where(r => r.TonGiao.ToUpper() != "KHONG").Count().ToString() + "</td>";
        //tính tổng theo trình độ ngoai ngu
        foreach (var item in listNgoaiNgu)
        {
            str += "<td>" + listbithuphobithu.Where(r => r.NgoaiNgu == item.ID).Count().ToString() + "</td>";
        }
        //tính tổng theo trình độ tin hoc
        foreach (var item in listTinHoc)
        {
            str += "<td>" + listbithuphobithu.Where(r => r.TinHoc == item.ID).Count().ToString() + "</td>";
        }
        //tính tổng theo do tuoi
        str += "<td>" + listbithuphobithu.Where(r => r.Tuoi <= CatalogAccess.GetDoTuoi().DoTuoi20).Count().ToString() + "</td>";
        str += "<td>" + listbithuphobithu.Where(r => r.Tuoi > CatalogAccess.GetDoTuoi().DoTuoi20 && r.Tuoi <= CatalogAccess.GetDoTuoi().DoTuoi25).Count().ToString() + "</td>";
        str += "<td>" + listbithuphobithu.Where(r => r.Tuoi > CatalogAccess.GetDoTuoi().DoTuoi25 && r.Tuoi <= CatalogAccess.GetDoTuoi().DoTuoi30).Count().ToString() + "</td>";
        str += "<td>" + listbithuphobithu.Where(r => r.Tuoi > CatalogAccess.GetDoTuoi().DoTuoi30 && r.Tuoi <= CatalogAccess.GetDoTuoi().DoTuoi35).Count().ToString() + "</td>";
        str += "<td>" + listbithuphobithu.Where(r => r.Tuoi > CatalogAccess.GetDoTuoi().DoTuoi35 && r.Tuoi <= CatalogAccess.GetDoTuoi().DoTuoi40).Count().ToString() + "</td>";
        str += "<td>" + listbithuphobithu.Where(r => r.Tuoi > CatalogAccess.GetDoTuoi().DoTuoi40 && r.Tuoi <= CatalogAccess.GetDoTuoi().DoTuoi42).Count().ToString() + "</td>";
        str += "<td>" + listbithuphobithu.Where(r => r.Tuoi > CatalogAccess.GetDoTuoi().DoTuoi42).Count().ToString() + "</td>";
        lbl.Text = str;
    }
    //hàm chuyển đổi ngày sinh sang tuổi
    public int tuoi(DateTime ngaysinh)
    {
        DateTime now_dt = DateTime.Now;
        int year = now_dt.Year;
        int tuoi = year-ngaysinh.Year;
        return tuoi;
    }
}